package atenas.negocio;

import java.util.Collection;

import atenas.dao.RolDAO;
import atenas.dao.UsuarioDAO;
import atenas.excepcion.LoginExcepcion;
import atenas.modelo.Rol;
import atenas.modelo.Usuario;
import atenas.dao.ClienteDAO;
import atenas.dao.PoderDAO;
import atenas.dao.RepresentanteDAO;
import atenas.excepcion.DAOExcepcion;
import atenas.modelo.Cargo;
import atenas.modelo.Cliente;
import atenas.modelo.Grupo;
import atenas.modelo.Poder;
import atenas.modelo.Representante;

public class SeguridadNegocio {

//Busca Cliente
	
	public Collection<Cliente> buscarClientePorCodCliente(String codcliente) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.buscarCliente(codcliente);
	}
	
//Busca Cliente por filtros
	
	public Collection<Cliente> BuscarClientePorFiltros(Cliente cli) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.BuscarClientexFiltros(cli);
	}
	
//Inserta Poder
	public void insertarPoder(Poder po) throws DAOExcepcion
	{
		PoderDAO pdao = new PoderDAO();
		pdao.registrarPoder(po);
		
	}

	//Buscar Poderes
	public Collection<Poder> buscarPoderesxNombre(String desc) throws DAOExcepcion
	{
		PoderDAO pdao = new PoderDAO();
		return pdao.buscarPoderesPorNombre(desc);
	}


	//Buscar Poderes
	public Collection<Poder> buscarPoderesxCodigo(String cod) throws DAOExcepcion
	{
		PoderDAO pdao = new PoderDAO();
		return pdao.buscarPoderesPorCodigo(cod);
	}
	
//Inserta Cliente
	public void insertarCliente(String codcliente, String razonsocial, String ruc, String feiniciooperaciones, String tipo, String cantidadempleados) throws DAOExcepcion {

		Cliente modelo = new Cliente();
		modelo.setCodcliente(codcliente);
		modelo.setRazonsocial(razonsocial);
		modelo.setRuc(ruc);
		modelo.setFeiniciooperaciones(feiniciooperaciones);
		modelo.setTipo(tipo);
		modelo.setCantidadempleados(cantidadempleados);

		ClienteDAO dao = new ClienteDAO();
		dao.insertar(modelo);
	}

//Busca Representante
	
		public Collection<Representante> buscarRepresentantePorDNI(String nudocumento) throws DAOExcepcion {
			RepresentanteDAO dao = new RepresentanteDAO();
			return dao.buscarRepresentante(nudocumento);
			
		}

//Inserta Representante		
		public void insertarRepresentante(String codrepresentante, String nombre, String apellidopaterno, String apellidomaterno, String tipodocumento, String nudocumento, String codcliente, String codgrupo, String codcargo) throws DAOExcepcion {
			Cliente cliente = new Cliente();
			cliente.setCodcliente(codcliente);
			
			Grupo grupo = new Grupo();			
			grupo.setCodgrupo(codgrupo);
			
			Cargo cargo = new Cargo();
			cargo.setCodcargo(codcargo);

			//System.out.println("paso1 codrepresentante="+codrepresentante);
			//System.out.println("paso1 cliente="+cliente.getCodcliente());
			
			Representante modelo = new Representante();
			
			modelo.setCodrepresentante(codrepresentante);
			modelo.setNombre(nombre);
			modelo.setApellidopaterno(apellidopaterno);
			modelo.setApellidomaterno(apellidomaterno);
			modelo.setTipodocumento(tipodocumento);
			modelo.setNudocumento(nudocumento);
			modelo.setCliente(cliente);
			
			modelo.setGrupo(grupo);
			modelo.setCargo(cargo);

			RepresentanteDAO dao = new RepresentanteDAO();
			dao.insertar(modelo);
		}

//Seccion Usuario

		public void insertarRol(String nombre, String desc) throws DAOExcepcion {

			Rol modelo = new Rol();
			modelo.setRolNombre(nombre);
			modelo.setDescripcion(desc);

			RolDAO dao = new RolDAO();
			dao.insertar(modelo);
		}

		public Collection<Rol> buscarRolesPorNombre(String nombre)
				throws DAOExcepcion {
			RolDAO dao = new RolDAO();
			return dao.buscarPorNombre(nombre);
		}
		
		public Rol obtenerRol(String rolNombre) throws DAOExcepcion {
			RolDAO dao = new RolDAO();
			return dao.obtener(rolNombre);
		}

		public void eliminarRol(String rolNombre) throws DAOExcepcion {
			RolDAO dao = new RolDAO();
			dao.eliminar(rolNombre);
		}
		
		public void actualizarRol(String nombre, String desc) throws DAOExcepcion {
			Rol modelo = new Rol();
			modelo.setRolNombre(nombre);
			modelo.setDescripcion(desc);

			RolDAO dao = new RolDAO();
			dao.actualizar(modelo);
		}
		
		public Collection<Rol> listarRoles() throws DAOExcepcion {
			RolDAO dao = new RolDAO();
			return dao.listar();
		}
		
		public Usuario validarUsuario(String idUsuario, String clave)
		throws DAOExcepcion, LoginExcepcion {
			UsuarioDAO dao = new UsuarioDAO();
			return dao.validar(idUsuario, clave);
		}
		
	
}
